home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / VELENG10.ZIP / CONNECT4.H < prev    next >
C/C++ Source or Header  |  1997-07-27  |  3KB  |  166 lines

  1.  
  2. /*#define DEBUG*/
  3.  
  4. #define LOGFILE     "connect4.log"
  5. #define TMPFILENAME "tempfile.$$$"
  6.  
  7. #define TEMP_BOOK  "openbook.cn4"
  8.  
  9. #define WHITE_BOOK "white_ob.cn4"
  10. #define BLACK_BOOK "black_ob.cn4"
  11.  
  12. #define ARROW_UP   0x4800
  13. #define ARROW_DOWN 0x5000
  14.  
  15. #define PAGE_UP    0x4900
  16. #define PAGE_DOWN  0x5100
  17.  
  18. #define TRUE  1
  19. #define FALSE 0
  20. #define YES   1
  21. #define NO    0
  22. #define ON    1
  23. #define OFF   0
  24.  
  25. #define FULL      -1
  26. #define EMPTY          0
  27. #define WHITE          1
  28. #define BLACK          2
  29. #define SWITCHSIDE 3
  30.  
  31. #define WIN     2
  32. #define DRAW    1
  33. #define NOTHING 0
  34.  
  35. #define BOARDX 7
  36. #define BOARDY 6
  37.  
  38. #define MAXSQUARES (BOARDX*BOARDY)
  39.  
  40. #define GROUPS     69
  41. #define MAXSOLS   700
  42. #define MAXGROUPS  50
  43. #define TILES       4
  44.  
  45. #define MAXMEN     42
  46.  
  47. #define ELM(x,y) ((x)+((y)<<3))
  48.  
  49. #define ELX(n) ((n)&7)
  50. #define ELY(n) ((n)>>3)
  51.  
  52. #define BOTH(x,y) ((x)+((y)<<6))
  53.  
  54. #define ALLOC_SOLUTIONS (9*GROUPS)
  55.  
  56. #define CHARS  0
  57. #define VESAGR 1
  58.  
  59. #define SQ_a1   ELM(0,0)
  60. #define SQ_a2   ELM(0,1)
  61. #define SQ_a3   ELM(0,2)
  62. #define SQ_a4   ELM(0,3)
  63. #define SQ_a5   ELM(0,4)
  64. #define SQ_a6   ELM(0,5)
  65.  
  66. #define SQ_b1   ELM(1,0)
  67. #define SQ_b2   ELM(1,1)
  68. #define SQ_b3   ELM(1,2)
  69. #define SQ_b4   ELM(1,3)
  70. #define SQ_b5   ELM(1,4)
  71. #define SQ_b6   ELM(1,5)
  72.  
  73. #define SQ_c1   ELM(2,0)
  74. #define SQ_c2   ELM(2,1)
  75. #define SQ_c3   ELM(2,2)
  76. #define SQ_c4   ELM(2,3)
  77. #define SQ_c5   ELM(2,4)
  78. #define SQ_c6   ELM(2,5)
  79.  
  80. #define SQ_d1   ELM(3,0)
  81. #define SQ_d2   ELM(3,1)
  82. #define SQ_d3   ELM(3,2)
  83. #define SQ_d4   ELM(3,3)
  84. #define SQ_d5   ELM(3,4)
  85. #define SQ_d6   ELM(3,5)
  86.  
  87. #define SQ_e1   ELM(4,0)
  88. #define SQ_e2   ELM(4,1)
  89. #define SQ_e3   ELM(4,2)
  90. #define SQ_e4   ELM(4,3)
  91. #define SQ_e5   ELM(4,4)
  92. #define SQ_e6   ELM(4,5)
  93.  
  94. #define SQ_f1   ELM(5,0)
  95. #define SQ_f2   ELM(5,1)
  96. #define SQ_f3   ELM(5,2)
  97. #define SQ_f4   ELM(5,3)
  98. #define SQ_f5   ELM(5,4)
  99. #define SQ_f6   ELM(5,5)
  100.  
  101. #define SQ_g1   ELM(6,0)
  102. #define SQ_g2   ELM(6,1)
  103. #define SQ_g3   ELM(6,2)
  104. #define SQ_g4   ELM(6,3)
  105. #define SQ_g5   ELM(6,4)
  106. #define SQ_g6   ELM(6,5)
  107.  
  108.  
  109. struct solvable_groups {
  110.                               short square[64][16];
  111.                               short sqpnt[64];
  112.                               };
  113.  
  114. struct solution {
  115.                      short valid;
  116.                      short solname;
  117.                      short solpoint[2];
  118.                      short sqinv[2*TILES];
  119.                      short sqinvnumb;
  120.                      short solgroups[GROUPS];
  121.                      short solgroupsnumb;
  122.                      };
  123.  
  124. struct intgp {
  125.                  short tgroups[GROUPS];
  126.                  short j,k;
  127.                  short mygroups[GROUPS];
  128.                  };
  129.  
  130. struct board {
  131.                  short square[(BOARDX+1)*(BOARDY+2)];
  132.                  short wipesq[(BOARDX+1)*(BOARDY+2)];
  133.                  short usablegroup[GROUPS];
  134.                  short sqused[(BOARDX+1)*(BOARDY+2)];
  135.                  short stack[BOARDX+1];
  136.                  short *groups[GROUPS][TILES];
  137.                  short xplace[GROUPS][TILES];
  138.                  short yplace[GROUPS][TILES];
  139.                  short turn;
  140.                  short moves[MAXMEN],choices[MAXMEN],mlist[MAXMEN];
  141.                  short filled;
  142.  
  143.                  struct intgp intgp;
  144.                  struct solution *solution[ALLOC_SOLUTIONS];
  145.                  short sp;
  146.                  short problem_solved,solused;
  147.                  short oracle[2],oracle_guesses,lastguess,bestguess;
  148.                  long nodes_visited;
  149.                  short maxtreedepth;
  150.  
  151.                  unsigned long rule[3];
  152.  
  153.                  unsigned long instances[10];
  154.  
  155.                  short wins[2],draws,lastwin;
  156.                  struct solvable_groups *solvable_groups;
  157.  
  158.                  unsigned char *white_book,*black_book;
  159.                  long wbposit,bbposit;
  160.                  long lastob;
  161.                  short autotest,cpu,white_lev,black_lev;
  162.                  short videotype,usegraphics,enablegr;
  163.                  short debug;
  164.                  };
  165.  
  166.